﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLogicLayer;
using DataAccessLayer;

namespace ChamCong.Admin
{
    public partial class ChiTietNV : BasePage
    {
        public static int maNV, maNVhienthoi;
        NhanVienBLL NVBLL = new NhanVienBLL();
        ChucVuBLL CVBLL = new ChucVuBLL();
        PhongBanBLL PBBLL = new PhongBanBLL();
        BangCapBLL BCBLL = new BangCapBLL();
        LoaiNVBLL LNVBLL = new LoaiNVBLL();
        CT_ChucVuBLL CTCVBLL = new CT_ChucVuBLL();
        LuongBLL lBLL = new LuongBLL();

        List<int> lstRole;
        QuanLyPhanQuyenBLL pqBLL = new QuanLyPhanQuyenBLL();

        protected void Page_Load(object sender, EventArgs e)
        {
            maNV = Convert.ToInt32(Request.QueryString["manv"]);
            maNVhienthoi = Convert.ToInt32(Session["MaNV"]);

            lstRole = pqBLL.LayMaRoleTuNV(maNVhienthoi);
            if (!IsPostBack)
            {                
                if (maNV > 0)
                {

                    ShowThongTinNV(maNV);


                    if (lstRole.Contains(1) || lstRole.Contains(4) || lstRole.Contains(5) || maNV == maNVhienthoi)
                    {
                        tbThongTinCT.Visible = true;
                        btnSua.Visible = true;
                    }
                    else
                    {
                        tbThongTinCT.Visible = false;
                        btnSua.Visible = false;
                    }

                }
                else
                {
                    Panel1.Visible = false;
                    sbcMsgBox4.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Warning, "Thông báo", "Bạn chưa chọn nhân viên!");
                }
            }
            
        }

        protected void btnSua_Click(object sender, EventArgs e)
        {
            EditThongTin.Visible = true;
            ShowThongTin.Visible = false;
            btnSua.Visible = false;
            btnUpdate.Visible = true;

            if (NVBLL.KiemTraNhanSu(maNVhienthoi) == true)
            {
                thongtincongty.Visible = true;
            }
            else
            {
                thongtincongty.Visible = false;
            }


            try
            {
                NHANVIEN NV = NVBLL.LayNhanVien(maNV);
                txtMaNV.Text = maNV.ToString().Trim();
                txtMaNV.Enabled = false;
                txtHoTen.Text = NV.HoTen.Trim();
                txtCMND.Text = NV.CMND.Trim();
                txtEmail.Text = NV.Email.Trim();
                txtSoDT.Text = NV.SoDT.Trim();
                drGioiTinh.SelectedValue = NV.GioiTinh;
                txtQuocTich.Text = NV.QuocTich;
                txtNgaySinh.Text = String.Format("{0:dd/MM/yyyy}", NV.NgaySinh);
                txtNgayVaoLam.Text = String.Format("{0:dd/MM/yyyy}", NV.NgayVaoLam);
                txtTamTru.Text = NV.TamTru;
                txtThuongTru.Text = NV.ThuongTru;
                txtNoiCap.Text = NV.NoiCap;
                if (NV.HocVan != null)
                {
                    drHocVan.SelectedValue = NV.HocVan.Trim();
                }

                txtBangCapKhac.Text = NV.BangCapKhac;
                if (NV.MucLuong != null)
                {
                    txtLuongCoBan.Text = NV.MucLuong.ToString();
                }
                if (NV.SoNgayPhepThuongNien != null)
                {
                    txtNgayPhep.Text = NV.SoNgayPhepThuongNien.ToString();
                }


                //lbThongBao.Text = "SoDT" + NV.SoDT;

                cblChucVu.DataBind();

                int mapb = NVBLL.LayMaPBTuNV(maNV);
                if (mapb != 0)
                {
                    drPhongBan.SelectedValue = mapb.ToString();
                }

                List<int> cv = CTCVBLL.LayDSChucVu(NV.MaNV);
                for (int i = 0; i < cblChucVu.Items.Count; i++)
                {
                    foreach (var j in cv)
                    {
                        if (int.Parse(cblChucVu.Items[i].Value) == Convert.ToInt32(j))
                        {
                            cblChucVu.Items[i].Selected = true;
                        }
                    }
                }
            }
            catch { }
        }

        protected void btnUpdate_Click(object sender, EventArgs e)
        {
            LUONG Luong = new LUONG();
            //điều kiện không để trống!
            if (txtMaNV.Text == "" || txtHoTen.Text == "" || txtCMND.Text == "" || txtSoDT.Text == "")
            {
                sbcMsgBox4.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Error, "Thông báo", "Nhập đủ các thông tin yêu cầu!");
            }
            else
            {
                try
                {
                    NHANVIEN NV = new NHANVIEN();
                    //Gán giá trị cho NHANVIEN
                    NV.MaNV = maNV;
                    NV.HoTen = txtHoTen.Text;
                    if (txtNgaySinh.Text != "")
                    {
                        NV.NgaySinh = DateTime.ParseExact(txtNgaySinh.Text, "dd/MM/yyyy", null);
                    }
                    NV.GioiTinh = drGioiTinh.Text;
                    NV.CMND = txtCMND.Text;
                    NV.ThuongTru = txtThuongTru.Text;
                    NV.TamTru = txtTamTru.Text;
                    NV.SoDT = txtSoDT.Text;
                    NV.Email = txtEmail.Text;
                    NV.QuocTich = txtQuocTich.Text;
                    
                    NV.MaBangCap = int.Parse(drBangCap.SelectedValue);
                    NV.NoiCap = txtNoiCap.Text;
                    NV.HocVan = drHocVan.SelectedValue;
                    NV.BangCapKhac = txtBangCapKhac.Text;




                    if (NVBLL.KiemTraTonTaix(NV.CMND, NV.Email, NV.SoDT, maNV) != null)
                    {
                        sbcMsgBox4.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Error, "Thông báo", NVBLL.KiemTraTonTaix(NV.CMND, NV.Email, NV.SoDT, maNV) + " đã tồn tại!");
                    }
                    else
                    {

                        if (lstRole.Contains(1) || lstRole.Contains(4) || lstRole.Contains(5))
                        {
                            //nhân sự, giám đốc mới có quyền chỉnh sửa đoạn này

                            NV.MaPB = int.Parse(drPhongBan.SelectedValue);
                            NV.MaLoaiNV = int.Parse(drLoaiNV.SelectedValue);
                            if (txtNgayPhep.Text.Trim() != "")
                            {
                                NV.SoNgayPhepThuongNien = int.Parse(txtNgayPhep.Text);
                            }
                            if (txtNgayVaoLam.Text != "")
                            {
                                NV.NgayVaoLam = DateTime.ParseExact(txtNgayVaoLam.Text, "dd/MM/yyyy", null);
                            }
                            //Gán giá trị cho LUONG
                            Luong.MaNV = maNV;
                            if (txtLuongCoBan.Text != "")
                            {
                                NV.MucLuong = int.Parse(txtLuongCoBan.Text);
                                Luong.MucLuong = int.Parse(txtLuongCoBan.Text);
                                Luong.NgayDinhLuong = DateTime.Now;
                                lBLL.ThemLuong(Luong);
                            }

                            #region Xóa CTCV

                            List<int> cv = CTCVBLL.LayDSChucVu(NV.MaNV);
                            foreach (int i in cv)
                            {
                                CTCVBLL.XoaCTChucVu(NV.MaNV, i);
                            }
                            #endregion

                            #region Thêm mới CTCV

                            //Thêm vào chi tiết chức vụ
                            for (int i = 0; i < cblChucVu.Items.Count; i++)
                            {
                                CT_CHUCVU CTCV = new CT_CHUCVU();

                                CTCV.MaNV = NV.MaNV;

                                if (cblChucVu.Items[i].Selected && cblChucVu.Items[i].Enabled != false)
                                {
                                    CTCV.MaCV = int.Parse(cblChucVu.Items[i].Value);
                                    CTCVBLL.ThemCTChucVu(CTCV);
                                }
                            }
                            #endregion
                        }

                        NVBLL.SuaNV(NV);
                        sbcMsgBox4.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Success, "Thông báo", "Sửa thông tin nhân viên thành công!");

                        ShowThongTinNV(maNV);
                    }
                }
                catch 
                {
                    sbcMsgBox4.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Error, "Thông báo", "Dữ liệu nhập sai!");
                }
            }            
        }

        //protected void ShowThongTinNV(int maNV)
        protected void ShowThongTinNV(int maNV)
        {
            ShowThongTin.Visible = true;
            EditThongTin.Visible = false;
            btnUpdate.Visible = false;
            btnSua.Visible = true;

            NHANVIEN NV = new NHANVIEN();

            NV = NVBLL.LayNhanVien(maNV);

            #region Lấy TT
            //if (IsPostBack)
            {
                //lblMaNV.Text = maNV.ToString();
                lblMaNV.Text = maNV.ToString();
                lblTenNV.Text = NV.HoTen;
                // lblNgaySinh.Text = NV.NgaySinh.ToString();
                lblNgaySinh.Text = String.Format("{0:dd/MM/yyyy}", NV.NgaySinh);
                lblGioiTinh.Text = NV.GioiTinh;
                lblQuocTich.Text = NV.QuocTich;
                lblCMND.Text = NV.CMND;
                lblSoDT.Text = NV.SoDT;
                lblEmail.Text = NV.Email;
                lblThuongTru.Text = NV.ThuongTru;
                lblTamTru.Text = NV.TamTru;
                lblHocVan.Text = NV.HocVan;
                lblNoiCap.Text = NV.NoiCap;
                txtXemBangCap.Text = NV.BangCapKhac;
                txtXemBangCap.Enabled = false;
                if (NV.SoNgayPhepThuongNien != null)
                {
                    lbNgayPhep.Text = NV.SoNgayPhepThuongNien.ToString();
                }

                lblNgayVaoLam.Text = String.Format("{0:dd/MM/yyyy}", NV.NgayVaoLam);
                if (NV.MaLoaiNV != null)
                {
                    lblLoaiNV.Text = LNVBLL.LayTenLoaiNV(NV.MaLoaiNV.Value);
                }
                if (NV.MaBangCap != null)
                {
                    lblBangCap.Text = BCBLL.LayTenBangCap(NV.MaBangCap.Value);
                }

                if (NV.MucLuong != null)
                {
                    lblLuong.Text = NV.MucLuong.ToString();
                }

                List<string> dsTenCV = CVBLL.LayCVTuNV(maNV);
                lblChucVu.Text = "";
                foreach (var i in dsTenCV)
                {
                    lblChucVu.Text += "- " + i + "</br>";
                }

                if (NVBLL.LayPBTuNV(maNV) == null)
                    lblPhongBan.Text = "";
                else
                    lblPhongBan.Text = NVBLL.LayPBTuNV(maNV);

            }
            #endregion            
        }

        //protected void btnXoa_Click(object sender, EventArgs e)
        //{
        //    //NHANVIEN NV = NVBLL.LayNhanVien(maNV);
        //    try
        //    {
        //        List<int> cv = CTCVBLL.LayDSChucVu(maNV);
        //        foreach (int i in cv)
        //        {
        //            CTCVBLL.XoaCTChucVu(maNV, i);
        //        }

        //        NVBLL.XoaNV(maNV);
        //        Response.Redirect("DSNV.aspx", true);
        //    }
        //    catch { }
        //}

        protected void Button1_Click(object sender, EventArgs e)
        {
            ShowThongTinNV(maNV);

            if (lstRole.Contains(1) || lstRole.Contains(4) || lstRole.Contains(5) || maNV == maNVhienthoi)
            {
                tbThongTinCT.Visible = true;
                btnSua.Visible = true;
            }
            else
            {
                tbThongTinCT.Visible = false;
                btnSua.Visible = false;
            }
        }

    }
}